package com.hoshiicloud.elasticsearch.service;

import com.hoshiicloud.elasticsearch.entity.EsProductRelatedInfo;
import com.hoshiicloud.elasticsearch.entity.Spu;
import org.springframework.data.domain.Page;

import java.util.List;

/**
 * @author ygd
 * @title: SpuService
 * @projectName hoshiicloud-elasticsearch
 * @description: spu service
 * @date 2019/7/16
 */
public interface SpuService {

    /**
     * 从数据库中导入所有商品到ES
     */
    int importSpuAll();

    /**
     * 根据id删除商品
     */
    void delete(Long id);

    /**
     * 根据id创建商品
     */
    Spu create(Long id);

    /**
     * 批量删除商品
     */
    void delete(List<Long> ids);

    /**
     * 根据关键字搜索名称或者副标题
     */
    Page<Spu> search(String keyword, Long storeId, Integer pageNum, Integer pageSize);


    /**
     * 查询spu列表
     * @param storeId   店铺id
     * @param pageNum   页码
     * @param pageSize  每页记录数
     * @return Page<Spu>
     */
    Page<Spu> list(Long storeId, Integer pageNum, Integer pageSize);

    /**
     * 根据关键字搜索名称或者副标题复合查询
     */
    Page<Spu> search(String keyword, Long brandId, Long productCategoryId, Integer pageNum, Integer pageSize, Integer sort);

    /**
     * 根据商品id推荐相关商品
     */
    Page<Spu> recommend(Long id, Integer pageNum, Integer pageSize);

    /**
     * 获取搜索词相关品牌、分类、属性
     */
    EsProductRelatedInfo searchRelatedInfo(String keyword);

}
